藉由這次開始開始使用更多的講一些使用lib以及常用的core api
(雖然前幾天也是直接丟了一堆lib,也沒有特別介紹XDDD)
從前幾天開始,都是講原理,其實使用lib也都是原理,只不過表達換成clojure的表達式而已
搞清楚背後的邏輯,換任何一套語言都可以很快上手,這邊就不論每個人對語言的喜好了XDD
拉回今天的主題,從昨天的buddy繼續開始吧
今天就來幫我們的使用者的密碼加鹽,然後分享我怎麼查資料
加鹽使用buddy-hashers,而且人家文件寫的很好
今天文件上有很多的演算法供我使用,所以我想動態的針對每個user配對
(defn derive-options []
(-> #{:bcrypt+blake2b-512 :bcrypt+sha384
:pbkdf2+blake2b-512 :pbkdf2+sha512
:pbkdf2+sha3_256 :pbkdf2+sha1}
shuffle
first))
#{...}
是 vec 的意思
所以一般看這段就是有個vec,洗一洗,取第一個
當然,這只是其中一種寫法,如果有順便玩4clojure的小測驗就熟悉了
都是跟leetcode一樣,給你一段描述,你想個演算法出來做到要的結果
再來就是我開發上常用的 let (let [] ...)
(let [pwd "hi"
derived-pwd (hashers/derive pwd {:alg (derive-options)})
result (hashers/verify pwd derived-pwd)]
(prn result))
這邊將我需要的變數都準備好(req那邊應該也滿有印象的吧)
然後一路執行,中間如果想要debug或需要修改,可以參考這些招式
接著repl看結果或確認使用方式,clojure都是immutable的,所以也不用擔心東西會被改壞,只怕你沒有去改
java的部分就是進入javadoc慢慢看了,不過這次不會
接下來幾天應該就會進入core api,使用哪些簡單的組合就能解決大部分的需求